package com.chapter7.neibulei.demo8;

/**
 * 类OverrideInner从外部类Outer继承，并重新定义了Outer中的内部类Inner。
 *
 * 在基类Outer的构造方法中调用了内部类的foo方法，
 * 如果OverrideInner类对内部类Inner的覆盖成功，那么在构造OverrideInner这
 * 个派生类对象时，根据多态性的原理，应该调用的是被重写后的Inner类
 * 的foo方法，输出“OverrideInner foo”，然而，程序运行的实际结果却是“Foo”。
 * 也就是说，OverrideInner类的内部类Inner对Outer类的内部类Inner没有任何影
 * 响，它们并不存在覆盖的关系，是完全独立的两个内部类，各自在自己的名称空间下
 */
public class OverrideInner extends Outer{
    class Inner{
        public void foo(){
            System.out.println("OverrideInner foo");
        }
    }

    public static void main(String[] args) {
        new OverrideInner();
    }

}


